package Day17.FileAndRecursion.Demo01.File;

/**
 * @author hyhWTX
 * @version 1.0
 * @ClassName Demo05File
 * @date 2022年08月28日 12:26
 * @Description: TODO (一句话描述以下该类的功能)
 */

import java.io.File;
import java.io.IOException;

/**
 * File类创建删除功能的方法
 * - public boolean createNewFile():当且仅当具有该名称的文件尚不存在时，创建一个新的空文件。
 * - public boolean delete():制除由此File表示的文件或目录。
 * - public boolean mkdir()︰创建由此File表示的目录。
 * - public boolean mkdirs()︰创建由此File表示的目录，包括任何必需但不存在的父目录。
 */

public class Demo05File {
    public static void main(String[] args) throws IOException {
//        show01();
//        show02();
        show03();
    }




    /**
     * public boolean createNewFile():当且仅当具有该名称的文件尚不存在时，创建一个新的空文件。
     *
     * 创建文件的路径和名称在构造方法中给出（构造方法的参数）
     * 返回值：布尔值
     *      true：文件不存在，创建文件，返回true
     *      false：文件存在，不会创建，返回false
     *  注意：
     *      1.此方只能创建文件，不能创建文件夹，
     *      2.创建文件的路径必须存在，否则会出现异常
     *
     *
     *
     * public boolean createNewFile() throws IOException
     *      createNewFile()声明抛出了IOException，我们调用这个方法，就必须得处理这个异常，要么throws，要么try catch处理
     */
    private static void show01() throws IOException {
        File f1 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\b.txt");
        boolean b1 = f1.createNewFile();
        System.out.println("b1："+b1);


        File f2 = new File("File\\c.txt");
        boolean b2 = f2.createNewFile();
        System.out.println("b2："+b2);//路径不存在，抛出IO异常

        File f3 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\新建文件夹");
        System.out.println(f3.createNewFile());
    }


    /**
     *   - public boolean mkdir()︰创建由此File表示的目录。
     *          创建单级文件夹
     *   - public boolean mkdirs()︰创建由此File表示的目录，包括任何必需但不存在的父目录。、
     *          既可以创建单级文件夹，也可以创建多级文件夹
     *
     *
     *    注意： 创建文件夹的路径和名称在构造方法中给出（构造方法的参数）
     *       返回值：布尔值
     *            true：文件夹不存在，创建文件夹，返回true
     *            false：文件夹存在，不会创建，返回false，构造方法中给出的路径不存在返回false
     *        注意：
     *            1.此方只能创建文件夹，不能创建文件，
     *
     *
     */
    private static void show02() {
        File f1 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\aaa");
        boolean b1 = f1.mkdir();
        System.out.println("b1："+b1);

        File f2 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\aaa\\bbb\\ccc");
        boolean b2 = f2.mkdirs();
        System.out.println("b2："+b2);

        File f3 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\b.txt");
        boolean b3 = f3.mkdirs();//看类型，是文件夹
        System.out.println("b3："+b3);
    }


    /**
     *public boolean delete():制除由此File表示的文件或目录。
     * 既可以删除构造方法路径中的文件和文件夹
     * 返回值：布尔值
     *      true：文件/文件夹删除成功
     *      false：文件夹中有内容，不会删除，返回false，构造方法中路径不存在false
     *  注意：
     *      delete方法直接在硬盘上删除文件/文件夹，不走回收站，删除需谨慎
     */
    private static void show03() {
        File f1 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\aaa\\bbb");
        boolean b1 = f1.delete();
        System.out.println("b1："+b1);
    }
}
